Error control coding (ECC) is a ubiquitous technique. Many electronic media suffer occasional losses or corruption of data; ECC is any data representation which is robust against such loss or corruption. Most ECC techniques are designed for protection of transmitted data, but the focus here is on protection of stored data.
Typically, coding is to protect against what is called physical errors. Examples are noise on a telephone line, defects on a disk or tape, or even the failure of an entire hard disk (as is protected by a RAID, a Redundant Array of Independent Disks). Protecting the data in such cases is done, first, by dividing it into blocks. Each block is coded independently. Since a code cannot protect against loss of many bits (or generally, symbols) in any block, the system must be designed so that bits in a block are more or less independent. (For example in the RAID, each bit of a coded block is stored on a separate disk. It is relatively unlikely that two disks will fail at once.)
Backing up computer files is typically done by making a duplicate copy of all the data. This means that the backup copy requires just as much space as the original, and to keep costs reasonable, backups are generally consigned to tape or another capacious but slow medium. Backups are so slow and inconvenient that they are often created and managed by a separate organization, and are often not worth using, except in case of catastrophe. Backups are extremely voluminous and time-consuming to make and unwieldy to organize.
In case of logical faults, it is relatively likely that all symbols in a single logical file will be corrupted or erased at the same time, in contradistinction to the physical fault model, discussed above. Computer viruses are one source of logical faults. The unit corrupted by a computer virus is not a disk track or similar physical unit, but a single computer file (usually an executable file). Another example is a user's own inadvertent erasure, change, or over-writing of a valuable computer file.
It is an object of the present invention to overcome the problems of known backup schemes and systems.
It is another object of the present invention to provide a scheme which allows to quickly and efficiently restore data in case of logical faults.
It is a further object of the present invention to provide a scheme which can be used for anti-virus protection.